package com.tankgame;

/**
 * @author 周超
 * @version 1.0
 */
@SuppressWarnings({"all"})
public class Shot implements Runnable
{
    //记录子弹的横纵坐标
    int x;
    int y;
    //子弹的方向
    int direct = 0;
    //子弹的速度
    int speed = 8;
    //表示子弹是否还是存活状态
    boolean isLive = true;//默认状态下是存活的

    //构造器
    public Shot(int x, int y, int direct)
    {
        this.x = x;
        this.y = y;
        this.direct = direct;
    }

    public int getSpeed()
    {
        return speed;
    }

    public void setSpeed(int speed)
    {
        this.speed = speed;
    }

    @Override
    //不停的去改变子弹的横纵坐标，是一个射击行为
    public void run()
    {
        while (true)
        {
            //一颗子弹就是一个线程,要让子弹间断的休眠 40ms
            try {
                Thread.sleep(40);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            //根据方向来改变 x，y的坐标
            switch (this.direct)
            {
                case 0: //子弹向上走
                    y -= speed;
                    break;
                case 1: //子弹向右走
                    x += speed;
                    break;
                case 2: //子弹向下走
                    y += speed;
                    break;
                case 3: //子弹向左走
                    x -= speed;
                    break;
            }

            //测试
            //System.out.println("子弹 x=" + x + " y=" + y);

            //子弹线程退出的条件：
            //1.当子弹移动到面板的边界时，就应该销毁（把启动的子弹的线程销毁)
            //2.当子弹触碰到敌人坦克时，子弹的线程也应该退出
            //this.setSize(1000,750);
            if (isLive == false)
            {
                break;
            }

            if (!(x >= 0 && x <= 1500 && y >= 0 && y <= 1250)) //如果子弹不在这个范围内，注意我这里
                                                              //是取反了!
            {
                //那么就相当于触碰到了边界，结束线程，顺便把子弹的存活状态改为false
                isLive = false;
                //System.out.println("子弹线程退出");
                break;
            }

        }
    }
}









